Android SDK API文档
本文档将详细介绍Android SDK的API,如果您想要了解如何接入,建议您阅读Android SDK 使用指南获得安装并使用SDK的方法。您可以在访问GitHub获取Android SDK的源代码。
最新版本为:2.2.0
更新时间为:2019-10-22
类: ThinkingAnalyticsSDK
概述
ThinkingAnalyticsSDK Android SDK, 使用ThinkingAnalyticsSDK 在应用里跟踪事件。
1. 初始化
public static ThinkingAnalyticsSDK sharedInstance(Context context, String appKey, String url)
说明:
用appid初始化ThinkingAnalyticsSDK实例,建议您首先在程序的入口初始化您的类。注意:在上传任何数据前,都必须先进行初始化。
参数:
appKey:您在后台获得的APP ID
url:数据上传的url
2. 获取实例
ThinkingAnalyticsSDK sharedInstance(Context context)
说明:
获取实例化对象,请在初始化完成后调用
返回值:
ThinkingAnalyticsSDK 实例
3. 追踪事件
public void track(String eventName)
说明:
上报一条事件数据,不设置任何属性(预置属性和公共属性仍会上传)
参数:
eventName:事件的名称,需要以字母开头,可以包括数字、字母及“_”,最大为50个字符
public void track(String eventName, JSONObject properties)
说明:
上报一条事件数据。
参数:
eventName:事件的名称,需要以字母开头,可以包括数字、字母及“_”,最大为50个字符
properties:事件的属性,是一个JSONObject对象,每个元素代表一个属性,key值为属性名,类型为String,value值为属性值,类型为String、Number、Boolean、Date
public void track(String eventName, JSONObject properties, Date time, final TimeZone timeZone)
说明:
上报一条事件数据。
参数:
eventName:事件的名称,需要以字母开头,可以包括数字、字母及“_”,最大为50个字符
properties:事件的属性,是一个JSONObject对象,每个元素代表一个属性,key值为属性名,类型为String,value值为属性值,类型为String、Number、Boolean、Date
time:事件触发的时间,类型为Date,传入的参数将替换默认选取的调用时本机时间作为事件触发时间
timeZone:触发时间的时区偏移,单位是小时
4. 记录事件时长
public void timeEvent(String eventName)
说明:
开始记录某个事件的时长,直到用户上传该事件为止,该事件中将会带有#duration
这一预置属性,用以表示记录的时长,多次开始记录同一事件的时长将会以最后一次调用作为计时起点,
参数:
eventName:您需要计时的事件的名称,当使用track上传该事件名的事件时,计时停止,并上传计时数据。
5. 设置账号ID
public void login(String accountId)
说明:
设置用户的账号ID,设置后用户上传的数据中将带有#account_id
这一字段,每次设置将会覆盖先前的账号ID,设置后的账号ID将会被保存,无需多次调用
请注意,该方法不会上传用户登录的事件,需要搭配track进行数据上报
参数:
accountId:您设置的账号ID,类型是String
6. 清空账号ID
public void logout()
说明:
清除账号ID,设置后用户上传的数据中将没有#account_id
这一字段
请注意,该方法不会上传用户登出的事件,需要搭配track进行数据上报
7. 访客ID
7.1 设置访客ID
修改默认分配的访客ID
public void identify(String identifyId)
说明:
设置用户的访客ID,SDK默认以UUID作为用户的访客ID,每次设置将会覆盖先前的访客ID,设置后的访客ID将会被保存,无需多次调用
参数:
identifyId:您设置的访客ID
7.2 获取访客ID
获取当前的访客ID
public String getDistinctId()
说明:
获取用户当前的访客ID
8. 用户属性
8.1 设置用户属性
public void user_set(JSONObject properties)
说明:
设置用户属性,该属性有值则覆盖
参数:
properties:需要设置的用户属性,是一个JSONObject对象,每个元素代表一个属性,key值为属性名,类型为String,value值为属性值,类型为String、Number、Boolean
8.2 设置单次用户属性
public void user_setOnce(JSONObject properties)
说明:
设置用户属性,该属性有值则不写入
参数:
properties:需要设置的用户属性,是一个JSONObject对象,每个元素代表一个属性,key值为属性名,类型为String,value值为属性值,类型为String、Number、Boolean
8.3 累加用户属性
public void user_add(JSONObject properties)
说明:
对数值型的用户属性进行累加操作,输入负值相当于减法操作
参数:
properties:需要进行累加操作的用户属性,是一个JSONObject对象,每个元素代表一个属性,key值为属性名,类型为String,value值为属性值,类型为Number
public void user_add(String propertyKey, Number propertyValue)
说明:
对数值型的用户属性进行累加操作,输入负值相当于减法操作,只设置一个属性
参数:
propertyKey: 需要进行累加操作的用户属性名
propertyValue: 累加的属性值,输入负值相当于减法操作
8.4 重置用户属性
public void user_unset(String... properties);
说明:
对传入属性名的用户属性进行重置,即将值清空设置成NULL
参数:
properties:需要进行重置操作的用户属性名,类型是String
8.5 删除用户
public void user_delete()
说明:
在数据库中删除该用户,该操作可能产生不可逆的后果,请慎用
9. 公共事件属性
9.1 设置公共事件属性
public void setSuperProperties(JSONObject superProperties)
说明:
添加事件公共属性,设置后上传的事件都会带有这些事件公共属性。每次设置会将新的属性添加进公共属性中,之前设置的也将保留,如果多次设置同一属性,则取最后一次的设置值,事件公共属性的配置将会被保存,无需多次调用
参数:
superProperties:您添加的公共事件属性,是一个JSONObject对象,每个元素代表一个属性,key值为属性名,类型为String,value值为属性值,类型为String、Number、Boolean
9.2 删除公共事件属性
public void unsetSuperProperty(String superPropertyName)
说明:
删除已设置的事件公共属性
参数:
superPropertyName:需要删除的事件公共属性的属性名
9.3 清空公共事件属性
public void clearSuperProperties()
说明:
清空所有已设置的事件公共属性
9.4 获得公共事件属性
public JSONObject getSuperProperties()
说明:
返回所有已设置的事件公共属性
返回值:
已设置的所有事件公共属性的JSONObject
10. 设置上报数据的网络环境条件
public void setNetworkType(ThinkingdataNetworkType type)
说明:
设置在哪些网络环境下可以上报数据
参数:
type:枚举类ThinkingdataNetworkType
,具体如下
public enum ThinkingdataNetworkType {
NETWORKTYPE_DEFAULT,
NETWORKTYPE_WIFI,
NETWORKTYPE_ALL
}
NETWORKTYPE_DEFAULT
:默认设置,在3G、4G、Wifi状态下上报数据
NETWORKTYPE_WIFI
:只在Wifi状态下上报数据
NETWORKTYPE_ALL
:在2G、3G、4G、Wifi状态下上报数据
11. 自动采集事件
11.1 开启自动采集事件
public void enableAutoTrack(List<AutoTrackEventType> eventTypeList)
说明:
开启SDK的自动采集事件
参数:
eventTypeList:枚举AutoTrackEventType
的列表,表示需要开启的自动采集事件类型,枚举定义如下
public enum AutoTrackEventType {
APP_INSTALL("ta_app_install"),
APP_START("ta_app_start"),
APP_END("ta_app_end"),
APP_CLICK("ta_app_click"),
APP_VIEW_SCREEN("ta_app_view"),
APP_CRASH("ta_app_crash");
}
分别表示:
APP_INSTALL
APP安装事件APP_START
APP启动事件APP_END
APP关闭事件APP_CLICK
APP控件点击事件APP_VIEW_SCREEN
APP页面浏览事件APP_CRASH
APP崩溃
11.2 开启Fragment
的页面浏览事件
public void trackFragmentAppViewScreen()
说明:
开启自动采集Fragment
的页面浏览事件,需要在BaseFragment
(基类)前添加注解 @ThinkingDataTrackFragmentAppViewScreen
并复写方法才可使用
@ThinkingDataTrackFragmentAppViewScreen
public class BaseFragment extends Fragment {
@Override
public void onResume() {
super.onResume();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
}
}
11.3 手动触发页面浏览事件
public void trackViewScreen(Activity activity)
public void trackViewScreen(android.app.Fragment fragment)
public void trackViewScreen(android.support.v4.app.Fragment fragment)
说明:
手动触发页面浏览事件
参数
需要触发页面浏览事件的页面
11.4 设置控件ID
public void setViewID(View view, String viewID)
public void setViewID(android.app.Dialog view, String viewID)
public void setViewID(android.support.v7.app.AlertDialog view, String viewID)
说明:
为控件设置控件ID,当控件触发控件点击事件时,上传的属性中将会带有该ID
参数
view:需要设置ID的控件 viewID:设置的控件ID
11.5 自定义控件点击事件的属性
public void setViewProperties(View view, JSONObject properties)
说明:
为控件设置自定义属性,当控件触发控件点击事件时,上传的属性中将会带有此处设置的自定义属性
参数
view:需要设置自定义属性的控件 properties:设置的自定义属性
11.6 忽略页面的自动采集事件
public void ignoreAutoTrackActivity(Class<?> activity)
public void ignoreAutoTrackActivities(List<Class<?>> activitiesList)
说明:
不上传某个或某些页面(Activity
)的自动采集事件(包括页面浏览与控件点击事件)
参数
需要忽略的Activity
或者Activity
的列表
11.7 忽略某个类型控件的点击事件
public void ignoreViewType(Class viewType)
说明:
不上传某个类型控件的控件点击事件
参数
需要忽略的view
的类型
11.8 忽略某个控件的点击事件
public void ignoreView(View view)
说明:
不上传某个控件的控件点击事件
参数
需要忽略的view
12. 与 H5 页面的打通
public void setJsBridge(WebView webView);
说明:
需搭配 JavaScript SDK使用,在初始化 WebView
时调用,可以让 Android SDK 上报在本WebView
中 JavaScript SDK 采集到的数据,详情请查看H5 与 APP SDK 打通 一节。
参数
包含集成了JavaScript SDK 的H5页面的webView
接口:ScreenAutoTracker
概述
为页面浏览事件增加页面URL信息,以及其他自定义属性
public interface ScreenAutoTracker {
/**
* 返回值作为当前页面的Url信息
* 作为该页面的URL以及下个页面的Referrer
* @return String
*/
String getScreenUrl();
/**
* 返回值为增加的自定义属性
* @return JSONObject
* @throws JSONException JSONException
*/
JSONObject getTrackProperties() throws JSONException;
}
接口:ThinkingExpandableListViewItemTrackProperties
概述
ExpandableListView
可以通过Adapter实现本接口,来为点击某item时触发的控件点击事件增加自定义属性。
public interface ThinkingExpandableListViewItemTrackProperties {
/**
* 增加点击 groupPosition、childPosition 处 item 时的属性
* @param groupPosition
* @param childPosition
* @return
* @throws JSONException
*/
JSONObject getThinkingChildItemTrackProperties(int groupPosition, int childPosition) throws JSONException;
/**
* 增加点击 groupPosition 处 item 时的属性
* @param groupPosition
* @return
* @throws JSONException
*/
JSONObject getThinkingGroupItemTrackProperties(int groupPosition) throws JSONException;
}
接口:ThinkingAdapterViewItemTrackProperties
概述
ListView
与GridView
可以通过Adapter实现本接口,来为点击某item时触发的控件点击事件增加自定义属性。
public interface ThinkingAdapterViewItemTrackProperties {
/**
* 增加点击 position 处 item 时的属性
* @param position
* @return
* @throws JSONException
*/
JSONObject getThinkingItemTrackProperties(int position) throws JSONException;
}
注解:@ThinkingDataTrackFragmentAppViewScreen
概述
在BaseFragment
(基类)前添加注解 @ThinkingDataTrackFragmentAppViewScreen
,可开启自动采集Fragment
的页面浏览事件
注解:@ThinkingDataTrackEvent
概述
在方法上加上注解@ThinkingDataTrackEvent
,可在方法调用时上传自定义事件
参数:
eventName:类型是String,为上传自定义事件的事件名 properties:类型是String,为事件的属性,需以key:value的格式表达一个属性
注解:@ThinkingDataIgnoreTrackAppViewScreen
概述
在Activity
或Fragment
前加上注解@ThinkingDataIgnoreTrackAppViewScreen
,将不再上传该页面的自动采集事件
注解:@ThinkingDataIgnoreTrackAppViewScreenAndAppClick
概述
在Activity
前加上注解@ThinkingDataIgnoreTrackAppViewScreenAndAppClick
,将不再上传该页面的自动采集事件与该页面下的控件点击事件
注解:@ThinkingDataTrackViewOnClick
概述
如果是以android:onclick
为控件(view)添加点击事件的调用方法,则可以在调用方法上添加注解@ThinkingDataTrackViewOnClick
,当该调用方法被执行时,SDK将会上传控件点击事件